package net.huashitong.ssydt.provider.money.service;


import net.huashitong.ssydt.money.entity.SsMoneyOrder;
import net.huashitong.ssydt.money.entity.vo.*;

import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.util.List;
import java.util.TreeMap;

/**
 * 金币模块服务
 *
 * @author <a href="mailto:yhy23456@163.com">huiyang.yu</a>
 * @since 2017.08.14
 */
public interface MoneyService {

    /**
     * vip套餐列表
     *
     * @return
     */
    List<VipBagsVo> vipBags();
    List<VipBagsVo> vipBagsByAppType(String appType);

    /**
     * 我的金币
     *
     * @param userId
     * @return
     */
    GoldsMyVo goldsMy(String userId);

    /**
     * 金币套餐列表
     *
     * @return
     */
    List<GoldyVo> golds();

    /**
     * 统一下订单接口
     *
     * @param orderInVO
     * @param userId
     * @return
     */
    OrderOutVO orders(OrderInVO orderInVO, String userId);

    /**
     * 获取我的vip状态
     *
     * @param userId
     * @return
     */
    VipMyVO vipMy(String userId);

    /**
     * 我的金币记录
     *
     * @param goldsRecordsMyInVO
     * @param userId
     * @return
     */
    List<GoldsRecordsMyOutVO> goldsRecordsMy(GoldsRecordsMyInVO goldsRecordsMyInVO, String userId);

    /**
     * 发起微信支付
     *
     * @param orderId
     * @param request
     * @return
     */
    TreeMap<String, String> wechatPay(String orderId, HttpServletRequest request);

    /**
     * 统一支付回调
     *
     * @param ssMoneyOrder
     */
    void payCallback(SsMoneyOrder ssMoneyOrder);

    /**
     * 发起金币支付
     *
     * @param orderId
     * @param userId
     */
    void goldPay(String orderId, String userId);

    /**
     * 发起支付宝支付
     *
     * @param orderId
     * @return
     */
    String alipayPay(String orderId);

    /**
     * 验证苹果支付
     *
     * @param applePayVO
     * @param userId
     */
    void applePay(ApplePayVO applePayVO, String userId) throws IOException;
}
